A computing device can have an operating system that supports essential functionality for using the computing device, such as scheduling tasks, executing software, and managing hardware and software resources of the computing device. In some examples, the operating system can include a runtime system that enables execution of software applications on the particular computing device. In particular examples, the runtime system can include compiler and/or interpreter software for converting application software into machine language instructions that can be directly executed by the computing device to perform one or more relatively low-level operations.
For example, the runtime system can support a virtual machine, where application software can be converted into one or more bytecodes. A bytecode is an instruction that performs one or more relatively low-level operations; e.g., memory loads and stores, register operations, and basic numerical operations. However, a bytecode may not be directly executable by the computing device, unlike machine language instructions.
To bridge the gap between bytecodes and machine-language instructions, bytecodes can be compiled by the compiler software, where compilation involves converting the bytecodes into machine-language instructions that can be executed by the computing device. Another technique for executing bytecodes includes interpreting the bytecodes using interpreter software, which can be software executable on the computing device that can perform operations as specified by the bytecodes. Typically, bytecodes that have been compiled into machine-language instructions can be executed faster than interpreted bytecodes.